package com.cyan.note.service;

import com.cyan.note.dto.auth.LoginRequest;
import com.cyan.note.dto.auth.LoginResponse;
import com.cyan.note.entity.User;

/**
 * 用户服务接口
 * 
 * @author ZhangzhenYu
 * @since 2025-01-13
 */
public interface UserService {
    
    /**
     * 用户登录
     * 
     * @param loginRequest 登录请求
     * @return 登录响应（包含Token和用户信息）
     */
    LoginResponse login(LoginRequest loginRequest);
    
    /**
     * 根据用户名查找用户
     * 
     * @param username 用户名
     * @return 用户实体
     */
    User findByUsername(String username);
    
    /**
     * 根据用户ID查找用户
     * 
     * @param userId 用户ID
     * @return 用户实体
     */
    User findById(Long userId);
    
    /**
     * 验证用户密码
     * 
     * @param rawPassword 原始密码
     * @param encodedPassword 加密后的密码
     * @return 是否匹配
     */
    boolean checkPassword(String rawPassword, String encodedPassword);
    
    /**
     * 获取角色显示名称
     * 
     * @param roleCode 角色代码
     * @return 角色名称
     */
    String getRoleName(String roleCode);
}